var facturas = {
	init:function(){
		$('#facturas').jqGrid({
           url:'facturas/index',
           datatype:'json',
           mtype:'POST',
           colNames:['id','Numero','Cliente','Usuario','Moneda','Total s/IGV','Total c/IGV','Monto Pagado','Creado','Estado FAC','Estado PAGO'],
           colModel:[
               {name:"id",hidden:true},
               {name:"numero",index:'Factura.numero',align:"right",width:50,align:'center',sortable:true,editable:false,searchoptions:{sopt:['cn','eq','ne','lt','le','gt','ge','bw','ew']}},
               {name:"cliente",index:'Cliente.razonsocial',width:150,align:'left',sortable:true,editable:false,searchoptions:{sopt:['cn','eq','ne','lt','le','gt','ge','bw','ew']}},
               {name:"usuario",index:'Usuario.nombres',width:150,align:'left',sortable:true,editable:false,searchoptions:{sopt:['cn','eq','ne','lt','le','gt','ge','bw','ew']}},
               {name:"moneda",index:'Moneda.descripcion',width:50,sortable:true,editable:false,searchoptions:{sopt:['cn','eq','ne','lt','le','gt','ge','bw','ew']}},
			   {name:"monto_sin_igv",index:'Factura.monto_sin_igv',width:50,align:'right',sortable:true,editable:false,searchoptions:{sopt:['cn','eq','ne','lt','le','gt','ge','bw','ew']}},
			   {name:"monto_con_igv",index:'Factura.monto_con_igv',width:50,align:'right',sortable:true,editable:false,searchoptions:{sopt:['cn','eq','ne','lt','le','gt','ge','bw','ew']}},
			   {name:"montopagado",index:'Factura.montopagado',width:50,align:'center',sortable:true,editable:false,searchoptions:{sopt:['cn','eq','ne','lt','le','gt','ge','bw','ew']}},
			   {name:"created",index:'Factura.created',width:50,align:'center',sortable:true,editable:false,searchoptions:{sopt:['cn','eq','ne','lt','le','gt','ge','bw','ew']}},
			   {name:"estadofactura",index:'Estadofactura.descripcion',width:60,align:'left',sortable:true,editable:false,searchoptions:{sopt:['cn','eq','ne','lt','le','gt','ge','bw','ew']}},
			   {name:"estadopago",index:'Estadopago.descripcion',width:60,align:'left',sortable:true,editable:false,searchoptions:{sopt:['cn','eq','ne','lt','le','gt','ge','bw','ew']}}               
           ],
		   pager:$('#facturas-pager'),
           rowNum:10,
           rowList:[10,20,30],
           viewrecords:true,
           caption:'facturas',
           height:'130',
           sortname: "Cliente.razonsocial",
           editurl: 'facturas/index',
		   onSelectRow: function(id){
		   		if(!id){
					id=0; var nro_nt = 'Seleccione una Factura/Boleta';
				}else{
					var ret = jQuery("#facturas").jqGrid('getRowData',id); 
					var numero = ret.numero;	
				}
				
				jQuery("#detallefacturas")
					.jqGrid('setGridParam',{url:"detallefacturas/index?q=Factura&modelopadre_id="+id,page:1}); 
				jQuery("#detallefacturas")
					.jqGrid('setCaption',"Detalles del documento Nro: "+numero)
					.trigger('reloadGrid'); 
				
				jQuery("#valesfactura")
					.jqGrid('setGridParam',{url:"valesalidas/getValesFactura?q=Factura&modelopadre_id="+id,page:1}); 
				jQuery("#valesfactura")
					.jqGrid('setCaption',"Vales de la Factura/Boleta Nro: "+numero)
					.trigger('reloadGrid'); 
				
			},
			toolbar: [true,"top"]             
       });
	   
		$("#t_facturas").append("<input type='button' id='facturaagregar' value='Nueva Factura/Boleta' style='height:20px;font-size:-3'/>&nbsp&nbsp"
								+"<input type='button' id='generarvale' value='Entregar Vale(s)' style='height:20px;font-size:-3'/>&nbsp&nbsp"
								+"<input type='button' id='verfactura' value='Ver Factura' style='height:20px;font-size:-3'/>"); 
								
		$("#t_facturas input").click(function(){ 
			if($(this).attr('id') == 'facturaagregar')  facturaIniciarDialogo();
			
			if($(this).attr('id') == 'generarvale'){
				var factura_id = jQuery("#facturas").jqGrid('getGridParam','selrow');
				if (factura_id) {
					var ret = jQuery("#facturas").jqGrid('getRowData',factura_id); 
					if(ret.estadofactura == "Entregado")  alert("EL VALE SALIDA YA FUE ENTREGADO");
					else  valesxAlmacenIniciarDialogo(factura_id);
				}else{ 
					alert("POR FAVOR SELECCIONE UNA FACTURA");
				} 
			} 
			return false;
		});
	   
	   $('#facturas').navGrid("#facturas-pager",{edit:false,add:false,del:false});
	   $("#facturas").jqGrid('filterToolbar',{stringResult: true,searchOnEnter : false});
       jQuery("#facturas").jqGrid('setGridWidth',$('#RightPane').width()-50);
	   
	   	
	   
	   $("#detallefacturas").jqGrid({
	   		height: 150, 
			url:'detallefacturas/index?q=Factura&modelopadre_id=0',
			datatype: "json", 
			colNames:['id','Codigo', 'Articulo', 'Presentacion','Cant. Pedida','Precio total','Observacion'],
			colModel:[ 
				{name:'data[Detalleordencompra][id]',index:'Detalleordencompra.id', hidden:true}, 
				{name:'data[Detalleordencompra][articulocodigo]',index:'Articulo.codigo', width:40, align:"right"},
				{name:'data[Detalleordencompra][articulodescripcion]',index:'Articulo.descripcion', width:160},
				{name:'data[Detalleordencompra][articulopresentacion]',index:'Articulo.presentacion', width:40},
				{name:'data[Detalleordencompra][cantidad]',index:'Detalleordencompra.cantidad', width:50, align:"right"},
				{name:'data[Detalleordencompra][prc_total]',index:'Detalleordencompra.prc_total', width:40, align:"right"},
				{name:'data[Detalleordencompra][observacion]',index:'Detalleordencompra.observacion', width:40}
			], 
			rowNum:5, 
			rowList:[5,10,20], 
			pager: '#detallefacturas-paper', 
			sortname: 'Articulo.descripcion', 
			viewrecords: true, 
			sortorder: "asc", 
			multiselect: false, 
			caption:"Detalle de la Factura/Boleta" 
		}).navGrid('#detallefacturas-paper',{add:false,edit:false,del:false});
		
		/** Visualizacion de los vale salidas generados por la factura **/
		jQuery("#detallefacturas").jqGrid('setGridWidth',$('#RightPane').width()-50);
		
		 $("#valesfactura").jqGrid({
	   		height: 150, 
			url:'valesalidas/getValesFactura?q=Factura&modelopadre_id=0',
			datatype: "json", 
			colNames:['id','Numero','Almacen', 'Fecha', 'Usuario que entrega','Estado del vale'],
			colModel:[ 
				{name:'data[Valesalida][id]', hidden:true}, 
				{name:'data[Valesalida][numero]',index:'Valesalida.numero', width:35, align:"center"},
				{name:'data[Valesalida][almacen]',index:'Almacen.codigo', width:35, align:"center"},
				{name:'data[Valesalida][created]',index:'Valesalida.created', width:35, align:"center"},
				{name:'data[Valesalida][usuarioentrega]',index:'Usuario.nombres', width:140},
				{name:'data[Valesalida][estadovalesalida]',index:'Valesalidaestado.descripcion', width:35}
			], 
			rowNum:5, 
			rowList:[5,10,20], 
			pager: '#valesfactura-paper', 
			sortname: 'Valesalida.numero', 
			viewrecords: true, 
			sortorder: "asc", 
			multiselect: false, 
			caption:"Vales de salida de la Factura/Boleta",
			toolbar: [true,"top"] 
		}).navGrid('#valesfactura-paper',{add:false,edit:false,del:false});
		
		jQuery("#valesfactura").jqGrid('setGridWidth',$('#RightPane').width()-50);
		
		$("#t_valesfactura").append("<input type='button' id='entregarvale' value='Ver Vale salida' style='height:20px;font-size:-3'/>&nbsp"); 
		$("#t_valesfactura input").click(function(){ 
			var vale = jQuery("#valesfactura").jqGrid('getGridParam','selrow'); 
			if( vale != null ) valeIniciarDialogo(vale); 
			else alert("Seleccione un Vale salida"); 
		});
		
		/** llama al archivo que contiene el dialog **/
		function facturaIniciarDialogo(id){
			$.post("facturas/add/"+id,{}, 
				function(data){
			  		$("#containerfacturas").append(data);
			  		if (id > 0)  facturaDialog("Editar Factura/Boleta");	
					else  facturaDialog("Crear Factura/Boleta");
				}
			);	
		}
		
		/** llama al archivo que contiene el dialog **/
		function valeIniciarDialogo(id){
			$.get("valesalidas/getValesalida/"+id,{}, 
				function(data){
			  		$("#containerfacturas").append(data);
			  		valeDialog("Entregar Vale Salida");	
				}
			);	
		}
		
		/** llama al archivo que contiene el dialog **/
		function valesxAlmacenIniciarDialogo(id){
			$.get("facturas/setValesalidaAlmacenes/"+id,{}, 
				function(data){
			  		$("#containerfacturas").append(data);
			  		valesxAlmacenDialogo("GENERAR VALE SALIDA");	
				}
			);
		}
		
		/** Carga la vista de los almacenes para vale **/
		function valesxAlmacenDialogo(titulo){
			$("#facturaDialog").attr({
				title: titulo
			});
			$("#facturaDialog").dialog({
				bgiframe: true,
				autoOpen: true,
				height: 400,
				width: 730,
				modal: true,
				buttons: {
					Entregar: function(){ //procedemos a entregar el vale
						$.ajax({
							url:'valesalidas/setValeFactura/'+$('#ValesalidaFacturaId').val()+'/'+$('#ValesalidaAlmacenId').val(),
							dataType:"json",
							success:function(response){
								if(!response.respuesta){
									$.post("menus/mensaje",{
										mensaje:"Ha ocurrido un error y no se ha podido actualizar el registro. Intente Nuevamente!", //+response.mensaje,
										titulo:"Fallo al Actualizar"},function(data){
											$("body").append(data);
											$('#mensajeDialogo').dialog({
												autoOpen:true,
												width:200,
												resizable: false,
												modal:true,
												height:170,
												overlay:{
													backgroundColor:'#000',
													opacity:0.5
												},
												buttons:{
													Ok: function(){
														$(this).remove();
													}
												},
												close: function(){
													$(this).remove();
												}
											});
										}
									);
								}else{
									$("#DocumentoNumeroSerie").attr('value',response.numero);
									jQuery("#facturas").trigger('reloadGrid');
									var buttons = $("#facturaDialog").parent().find("div.ui-dialog-buttonset").find('button');
									$(buttons[0]).remove();
									
									$.post("menus/mensaje",{
										mensaje:response.mensaje,
										titulo:"Documento Actualizado"},function(data){
											$("body").append(data);
											$('#mensajeDialogo').dialog({
												autoOpen:true,
												width:200,
												resizable: false,
												modal:true,
												height:170,
												overlay:{
													backgroundColor:'#000',
													opacity:0.5
												},
												buttons:{
													Ok: function(){
														$(this).remove();
													}
												}
											});
										}
									);
								}
								return false;
							}
						}); 
						return false;
					},
					Volver: function(){
						$(this).remove();
					}
				},
				close: function(){
					$(this).remove();
				}
			});
		}
		
		/** Carga la vista del vale salida **/
		function valeDialog(titulo){
			$("#facturaDialog").attr({ title: titulo });
			$("#facturaDialog").dialog({
				bgiframe: true,
				autoOpen: true,
				height: 400,
				width: 730,
				modal: true,
				buttons: {
					Entregar: function(){ //procedemos a entregar el vale
						$.ajax({
							type: 'get',
							url: "valesalidas/actualizar",
							dataType:'json',
							data: {
								vale: parseFloat($("#ValesalidaId").val()),
								oper: 'entregar'
							},
							success: function(response){
								if (!response.respuesta) var titulo = "Fallo al Actualizar";
								else var titulo = "Actualizacion";
								
								var mensaje = response.mensaje;
								
								$.post("menus/mensaje", {mensaje: mensaje, titulo: titulo }
								,function(data){
									$("body").append(data);
									$('#mensajeDialogo').dialog({
										autoOpen: true,width: 200,resizable: false,modal: true,height: 170,
										overlay: {backgroundColor: '#000', opacity: 0.5 },
										buttons: {
											Ok: function(){
												if(response.respuesta){
													jQuery("#valesfactura").trigger('reloadGrid'); 
													jQuery("#facturas").trigger('reloadGrid'); 
													var buttons = $(".ui-dialog-buttonset").find('button');
													$(buttons[0]).remove();	
												}
												$(this).remove();
											}
										},
										close: function(){
											if(response.respuesta){
												jQuery("#valesfactura").trigger('reloadGrid'); 
												jQuery("#facturas").trigger('reloadGrid'); 
												var buttons = $(".ui-dialog-buttonset").find('button');
												$(buttons[0]).remove();	
											}
											$(this).remove();
										}
									});
								});
							}
						});		
					},
					Volver: function() { 
						$(this).remove();
					}
				},
				close: function(){
					$(this).remove();
				}
			});
			//verifico si es necesario mostrar el boton de entregar
			if(parseFloat($("#ValesalidaValesalidaestadoId").val()) == 2){
				var buttons = $(".ui-dialog-buttonset").find('button');
				$(buttons[0]).remove();
			}
			//muestro la vista del vale
			$("#facturaDialog").removeClass('hide');
		}
		
		
		/** Carga el formulario de dialogo de los Ordencompra **/
		function facturaDialog(titulo){
			$("#facturaDialog").attr({ title: titulo });
		
			$("#facturaDialog").dialog({
				bgiframe: true,
				autoOpen: true,
				height: 500,
				width: 930,
				modal: true,
				buttons: {
					Guardar: function(){
						if($("#FacturaActualizarForm").valid()){
							//se guarda o se actualiza la OC
							facturaActualizar("update");
						}	
					},
					Borrar: function(){								 	
						// DIALOGO DE CONFIRMACION 
						$.post("menus/mensaje",{
							mensaje: "Esta apunto de borrar este registro permanentemente. Desea Continuar?",
							titulo: "Borrar Orden de Compra"
						},
						function(data){
							// Se agrega el mensaje
					  		$("body").append(data);
					  		
					  		// Se activa  el dialogo
					  		$("#mensajeDialogo").dialog({
								bgiframe: true,
								resizable: false,
								height:170,
								modal: true,
								overlay: {
									backgroundColor: '#000',
									opacity: 0.5
								},
								buttons: {
									Continuar: function() {
										facturaActualizar("delete");
										$(this).remove();						
									},
									Cancelar: function() {
										$(this).remove();
										//$(this).dialog('destroy');								
									}
								},
								close: function() {							
									$(this).remove();
								}
							});
						});					
					},
					Volver: function() { 
						$(this).remove(); //$(this).dialog('close'); 
					}
				},
				close: function(){
					$(this).remove();
				}
			});
			
			//valido el formulario orden compra
			var validator = $("#FacturaActualizarForm").validate();
			
			jQuery.validator.addMethod('cantidadmenorquestock', function(val, el){
			 	maximovalor = isNaN(parseFloat($(el).parent().prev().find('input').val()))?"0":parseFloat($(el).parent().prev().find('input').val());
			 	value = parseFloat(val,10);
			 	if(value > maximovalor)
			 		return false;
			 	else
			 		return true;
			});
			
			//muestro el formulario
			$("#facturaDialog").removeClass('hide');
		}
		
		/** Creamos o Actualizamos la orden compra **/
		function facturaActualizar(oper){
			// enviamos la data para ser guardada
			$.ajax({
				type:'POST',
				url: "facturas/actualizar/oper:"+oper,
				data: $('#FacturaActualizarForm').serialize(),
				success: function(response){
					if(!response.respuesta){
						$.post("menus/mensaje",{
							mensaje:"Ha ocurrido un error y no se ha podido actualizar el registro. Intente Nuevamente!"+response.mensaje,
							titulo:"Fallo al Actualizar"},function(data){
								$("body").append(data);
								$('#mensajeDialogo').dialog({
									autoOpen:true,
									width:200,
									resizable: false,
									modal:true,
									height:170,
									overlay:{
										backgroundColor:'#000',
										opacity:0.5
									},
									buttons:{
										Ok: function(){
											$(this).remove(); //$(this).dialog('close');
										}
									},
									close: function(){
										$(this).remove();
									}
								});
							}
						);
					}else{
						$.post("menus/mensaje",{
							mensaje:(oper === 'delete')?'EL REGISTRO FUE ELIMINADO':response.mensaje,
							titulo:"Documento Actualizado"},function(data){
								$("body").append(data);
								$('#mensajeDialogo').dialog({
									autoOpen:true,
									width:200,
									resizable: false,
									modal:true,
									height:170,
									overlay:{
										backgroundColor:'#000',
										opacity:0.5
									},
									buttons:{
										Ok: function(){
											if(isNaN(parseFloat($('#FacturaId').val()))){
												$("#FacturaId").attr('value',response.factura_id);
												$("#DocumentoNumeroSerie").attr('value',response.numero);
												$("#DocumentoTipodocumentoId").attr('disabled','disabled');
											}
											jQuery("#facturas").trigger('reloadGrid');
											
											if(oper == 'delete'){
												jQuery("#detallefacturas")
													.jqGrid('setGridParam',{url:"detallefacturas/index?q=Factura&modelopadre_id=0",page:1});
												jQuery("#detallefacturas")
													.jqGrid('setCaption',"Invoice Detail: Seleccione una orden de compra")
													.trigger('reloadGrid');
												$('#facturaDialog').remove(); //dialog('close');
											}else{
												jQuery("#detallefacturas").trigger('reloadGrid');
											}
											$(this).remove();
										}
									},
									close: function(){
										$(this).remove();
									}
								});
							}
						);
					}
				},
				dataType: 'json'
			});
			return false;
		}
	}
};